package com.net.xpay.admin.vo;

import com.net.xpay.common.enums.partner.PartnerCombinationSettleRecordType;
import com.net.xpay.common.enums.user.CommissionMode;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

@Getter
@Setter
@NoArgsConstructor
public class PartnerCombinationSettleRecordExportVo {
    @ApiModelProperty(notes = "日期")
    private LocalDate day;

    @ApiModelProperty(notes = "商户id")
    private Long userId;

    @ApiModelProperty(notes = "合伙人id")
    private Long partnerId;

    @ApiModelProperty(notes = "月份")
    private Integer month;

    @ApiModelProperty(notes = "年份")
    private Integer year;

    @ApiModelProperty(notes = "业务类型 1.批量有密  2.安全发")
    private PartnerCombinationSettleRecordType type;

    @ApiModelProperty(notes = "是否已结算")
    private Boolean settled;

    @ApiModelProperty(notes = "是否已结算显示")
    private String settledShow;

    @ApiModelProperty(notes = "结算时间")
    private LocalDateTime settleTime;

    /**
     * 用户费率和分佣模式
     */
    @ApiModelProperty(notes = "到支付宝服务费收费比例")
    private BigDecimal serviceRatio;

    @ApiModelProperty(notes = "到卡服务费收费比例")
    private BigDecimal bankServiceRatio;

    @ApiModelProperty(notes = "分佣模式")
    private CommissionMode commissionMode;

    @ApiModelProperty(notes = "百分比模式 合伙人毛利润分佣比例")
    private BigDecimal benefitRatio;

    @ApiModelProperty(notes = "成本模式 服务费成本价收费比例")
    private BigDecimal costServiceRatio;

    @ApiModelProperty(notes = "成本模式 到卡服务费成本价收费比例")
    private BigDecimal bankCostServiceRatio;

    /**
     * 统计字段
     */
    @ApiModelProperty(notes = "服务费支出 元")
    private BigDecimal finalServiceAmount;

    @ApiModelProperty(notes = "分佣金额 元")
    private BigDecimal partnerSettleAmount;

    @ApiModelProperty(notes = "批次总金额，单位为元，精确到小数点后两位")
    private BigDecimal totalTransAmount;

    @ApiModelProperty(notes = "批次总笔数 10 必选")
    private Long totalCount;

    @ApiModelProperty(notes = "成功金额 单位为元")
    private BigDecimal successAmount;

    @ApiModelProperty(notes = "成功笔数")
    private Long successCount;

    @ApiModelProperty(notes = "失败金额")
    private BigDecimal failedAmount;

    @ApiModelProperty(notes = "失败笔数")
    private Long failCount;

    @ApiModelProperty(notes = "成功到卡的金额")
    private BigDecimal successBankAmount;

    @ApiModelProperty(notes = "成功到卡的笔数")
    private Long successBankCount;

    @ApiModelProperty(notes = "成功到支付宝的金额")
    private BigDecimal successAlipayAmount;

    @ApiModelProperty(notes = "成功到支付宝的笔数")
    private Long successAlipayCount;

    //收费部分
    @ApiModelProperty(notes = "不免费的金额")
    private BigDecimal notFreeSuccessAmount;

    @ApiModelProperty(notes = "不免费的笔数")
    private Long notFreeSuccessCount;

    @ApiModelProperty(notes = "不免费部分到卡的金额")
    private BigDecimal notFreeSuccessBankAmount;

    @ApiModelProperty(notes = "不免费部分到卡的笔数")
    private Long notFreeSuccessBankCount;

    @ApiModelProperty(notes = "不免费部分成功到支付宝的金额")
    private BigDecimal notFreeSuccessAlipayAmount;

    @ApiModelProperty(notes = "不免费部分的成功到卡的金额")
    private Long notFreeSuccessAlipayCount;

    //额外计算的
    @ApiModelProperty(notes = "成本模式 合伙人结算分成费率")
    private BigDecimal partnerServiceRatio;

    @ApiModelProperty(notes = "成本模式 合伙人到卡结算分成费率")
    private BigDecimal partnerBankServiceRatio;

    //额外计算的显示
    @ApiModelProperty(notes = "成本模式最终显示字段")
    private String resultShow;

}
